package com.controller;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

import com.facade.AnoFacade;
import com.facade.DepartamentoFacade;
import com.facade.DisciplinaFacade;
import com.facade.PeriodoFacade;
import com.facade.ProjetoFacade;
import com.model.Ano;
import com.model.Departamento;
import com.model.Disciplina;
import com.model.Periodo;
import com.model.ProjetoMonitoria;


@ViewScoped
@ManagedBean(name="projetoBean")
public class ProjetoBean implements Serializable{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = -6394005333421041880L;
	
	private List<Ano> anos;
	private List<Periodo> periodos;
	private List<Disciplina> disciplinas;
	private List<Departamento> departamentos;
	
	
	private AnoFacade anoFacade;
	private PeriodoFacade periodoFacade;
	private DisciplinaFacade disciplinaFacade;
	private ProjetoFacade projetoFacade;
	private DepartamentoFacade departamentoFacade;
	
	private Ano ano;	
	private Periodo periodo;
	private Disciplina disciplina;
	private ProjetoMonitoria projetoMonitoria;
	private Departamento departamento;
	
	
	
	

	@PostConstruct
	public void init(){
		
		initFacade();
		initListas();
		initEntity();
		
	}
	
	public void initEntity(){
		if(projetoMonitoria==null){
			projetoMonitoria = new ProjetoMonitoria();
		}
	}
	public void initListas(){
		if(anos == null){
			anos = anoFacade.retornaAnos();
		}
		if(periodos==null){
			periodos = periodoFacade.retornaPeriodos();
		}
		if(disciplinas==null){
			disciplinas = disciplinaFacade.retornaDisciplinas();
		}
		if(departamentos == null){
			departamentos = departamentoFacade.retornaDepartamentos();
		}
	}
	
	public void initFacade(){
		if(anoFacade==null){
			anoFacade= new AnoFacade();
		}
		if(periodoFacade==null){
			periodoFacade = new PeriodoFacade();
		}
		if(disciplinaFacade==null){
			disciplinaFacade= new DisciplinaFacade();
		}
		if(projetoFacade==null){
			projetoFacade = new ProjetoFacade();
		}
		if(departamentoFacade==null){
			departamentoFacade = new  DepartamentoFacade();
		}
		
		
	}
	public ProjetoBean() {
		// TODO Auto-generated constructor stub
	}
	
	
	
	
	
	public void criar(ActionEvent e){
		
	
		projetoFacade.salvar(projetoMonitoria);
	}
	
	
	
	
	
	
	
	public List<Disciplina> getDisciplinas() {
		return disciplinas;
	}
	public void setDisciplinas(List<Disciplina> disciplinas) {
		this.disciplinas = disciplinas;
	}
	public List<Periodo> getPeriodos() {
		return periodos;
	}
	public void setPeriodos(List<Periodo> periodos) {
		this.periodos = periodos;
	}
	public List<Ano> getAnos() {
		return anos;
	}
	public void setAnos(List<Ano> anos) {
		this.anos = anos;
	}
	public AnoFacade getAnoFacade() {
		return anoFacade;
	}
	public void setAnoFacade(AnoFacade anoFacade) {
		this.anoFacade = anoFacade;
	}
	public PeriodoFacade getPeriodoFacade() {
		return periodoFacade;
	}
	public void setPeriodoFacade(PeriodoFacade periodoFacade) {
		this.periodoFacade = periodoFacade;
	}
	public DisciplinaFacade getDisciplinaFacade() {
		return disciplinaFacade;
	}
	public void setDisciplinaFacade(DisciplinaFacade disciplinaFacade) {
		this.disciplinaFacade = disciplinaFacade;
	}

	public Ano getAno() {
		return ano;
	}

	public void setAno(Ano ano) {
		this.ano = ano;
	}

	public Periodo getPeriodo() {
		return periodo;
	}

	public void setPeriodo(Periodo periodo) {
		this.periodo = periodo;
	}

	public Disciplina getDisciplina() {
		return disciplina;
	}

	public void setDisciplina(Disciplina disciplina) {
		this.disciplina = disciplina;
	}
	public ProjetoMonitoria getProjetoMonitoria() {
		return projetoMonitoria;
	}

	public void setProjetoMonitoria(ProjetoMonitoria projetoMonitoria) {
		this.projetoMonitoria = projetoMonitoria;
	}

	public Departamento getDepartamento() {
		return departamento;
	}

	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}

	public List<Departamento> getDepartamentos() {
		return departamentos;
	}

	public void setDepartamentos(List<Departamento> departamentos) {
		this.departamentos = departamentos;
	}

}
